Virtual connection of a remote unit to a server

ABSTRACT

Apparatus and associated methods are provided which allow a remote user to maintain a virtual session with a server. A virtual session allows a remote and possibly mobile user to maintain a virtual presence in an office environment without actually being present. Using the present invention, a remote user can access a central application program such as an Internet service provider, a database system, an inventory system or billing system. Likewise, the remote user can receive calls and other forms of communications as though he or she were present in an office environment. A virtual session does not require a physical connection to be continuously present in order to provide a virtual connectivity. This is especially important for mobile applications where the remote user may incur long distance and/or wireless toll charges. Also, methods are presented to allow a remote unit to rapidly reconnect in a transparent and seamless way without burdening the user with the need to connect and reconnect or to upload and download information. Related methods are provided to allow the virtual session to be established, operated and maintained.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to client-server computingarchitectures and communication techniques. More particularly, theinvention relates to a system whereby a mobile worker and a centralserver may maintain a virtually continuous connection without the needto maintain a physical connection continuously.

2. Description of the Related Art

The concept of a virtual connection has arisen in connection withtelecommuting and related applications. Such a system is described inU.S. Pat. No. 5,764,639. A telecommuter dials into a server using astandard telephone line. The telecommuter's modem and a modem controlledby the central server establish a connection therebetween. Once aconnection is established, the telecommuter may access a computerconnected to the server, read emails and receive phone calls and faxes.For example, if a customer attempts to call the telecommuter at work bydialing into a private branch exchange (PBX), the server will convertthe incoming call to a packetized form, such as H.323, and redirect thecall via the existing connection between the telecommuter and theserver. Using this system, the telecommuter may access a computer atwork, answer phone calls and answer emails. The telecommuter thusappears to be present in his or her office and thus has a virtualpresence there. Note for this system to properly function, thetelecommuter must stay connected to the server at all times. While thisdoes not present a significant problem for local telecommuting, thissolution is quite costly for long distance telecommuting. Likewise, thissolution is very costly if the telecommuter is mobile and must maintaina virtual presence with the server using a cellular wireless connection.Furthermore, in some areas it may be difficult to maintain a wirelessconnection continuously. A lost connection may also prevent one fromregaining access to the system until some period of time has passed.Some mobile workers require only intermittent access to the server, butfind it too inconvenient to place a dial-in call and to log onto thesystem every time access is needed.

There is a need to provide mobile workers with various forms of virtualconnectivity. Mobile workers differ from telecommuters in that while atelecommuter typically works from a single home location or remoteoffice, a mobile worker moves from location to location during thecourse of a normal working day. An example of a mobile worker is ahome-care professional. A home-care professional is a medical worker whoperiodically travels to visit with different sets of homebound patientsaccording to their individual needs. The individual patients each have aset of medical records indicative of their medical histories. Apatient's medical record is preferably maintained as an interactiveelectronic document containing multiple parts. For example, the medicalrecord indicates to the home-care professional precisely what proceduresare to be performed and what medications are to be administered orotherwise given to the patient. Once the services are performed, thehome-care professional must annotate the medical record accordingly. Themedical record is updated to reflect the patient's vital signs and otherinformation related to patient progress. Also, a billing system takesnote to track expendables and services rendered. For example, thepatient may be billed per visit and each visit may involve theexpenditure of billable resources such as medicines.

In the above scenario, a mobile worker must interact with a centralserver during the course of a day. The worker may wish to access thecentral server while visiting a patient. The worker may also wish toaccess the server from a location where only a wireless connection canbe established. From a performance perspective, an ideal solution is toprovide the mobile worker with a wireless connection from a remote unitto a central server. Such a wireless connection could be established viaa high-powered radio connection with a broad area of coverage or via anexisting cellular or personal communication system (PCS) network.Solutions using high-powered radio links have the disadvantage thatcostly spectrum may be required. Maintaining a link on a cellular or PCSsystem is expensive in that a continuous connection consumes billableairtime which is also very costly. From an airtime-cost perspective, anideal solution would be to force the worker to create a connection,download or up load information, and work locally with data on theremote unit as often as possible. This solution is tedious, and whilesaving airtime costs, may actually represent the more costly solutionwhen professional service costs are factored in. This method has theadded disadvantage that when files are uploaded or downloaded the datamust be synchronized in case another user has changed the data inparallel with the mobile worker. Alternatively, other users must be“locked out” of the file from the time the mobile user downloads ituntil it is finally uploaded with any changes made. This is the problemsolved using semaphores in shared memory systems. In the context of thepresent invention, a “file semaphore” is a semaphore used to lock asecond user out of a file while a first user is using it. Due to theaforementioned reasons, in many applications forcing the worker torepeatedly connect, disconnect, upload and download information isunacceptable.

Some mobile networks have been constructed using what is known ascellular digital packet data (CDPD). In a CDPD network, a remote unittransmits a data packet on an unused analog channel. In this sense themobile unit remains virtually connected to a CDPD communication server.Wireless airtime is only consumed when data is actually sent. Adisadvantage to this approach is CDPD networks are not universallyavailable. Cellular coverage is much more ubiquitous than CDPD coverage.Also, CDPD network subscribers must often pay high fees and hence CDPDmay not represent the most economical solution.

In some systems such as packet switched network routers, offices makeuse of dial-out links. Dial-out links are useful when remote offices areseparated by long distances. In such systems, when a packet must berouted from a first office to a second office, a call is placed to routethe packet. The dial-out connection remains connected until a no-trafficcondition is detected, indicating the line is no longer active. When theno-traffic condition is detected the connection is dropped until it isagain needed. Dial-out links are thus used to reduce long distance feesassociated with maintaining a constant connection, and represents auseful starting point for solving the foregoing problems relating to theestablishment of a virtual presence of a mobile worker. Client-serverprotocols and fast automated connection strategies employing dial-outlinks are needed to provide new ways for a mobile worker to maintain avirtual presence. Also, new methods are needed to enable dial-out linksto be set up with low delays to make them more useful for novel systems.

It would be desirable to provide a system whereby a remote worker couldmaintain a seamless connection with a central server without the need tomaintain a dedicated channel. It would be desirable if the remote workercould communicate with the central server without the need to spend timeto enter a password, reconnect, and wait for a line negotiation sequenceto proceed before being able to use the connection. It would bedesirable for a protocol stack to activate a virtual session based on aprediction derived from a workflow. It would be desirable to use thisprediction to set up a connection in the background without disturbingthe mobile worker while the mobile worker performed tasks in a workflow.It would also be desirable to have a remote unit which contains most ofthe screen-related information needed to provide the appearance of anestablished connection before the connection has been fully established.It would be desirable for the remote unit to download information beforeit is needed and upload information after it is gathered without theuser even being aware these actions are being performed. It wouldfurther be desirable to establish a virtual session using a firstcommunication medium such as a landline and to later communicate usingthe same virtual session using a second communication medium such as awireless link. This would allow a mobile worker to select the mosteconomical or convenient means of communications at a given time. Inembodiments involving modem-based connections, it would be desirable totransmit data immediately using instantly available but lower linespeeds. It would be desirable to then negotiate a higher line speed inthe background while the remote worker and/or the server perform othertasks. Moreover, it would be desirable to establish a session between aremote unit and a server so that various forms of communications mayproceed while providing the user with the appearance the user iscontinuously connected to the server and has a virtual presence with theserver.

SUMMARY OF THE INVENTION

The present invention solves these and other problems by providingsystems and methods to enable a remote worker to stay virtuallyconnected to a central server without the need to continuously remainconnected via a physical channel. The present invention is useful whencosts are associated with maintaining a connection, for example when theconnection has associated with it long distance, wireless, or otherusage-related toll charges.

A first aspect of the present invention involves a communicationprotocol making use of a virtual session layer. The virtual sessionlayer allows a communication session and an application session to bemaintained in an inactive state when no physical connection exists. Whena remote unit later reconnects with a server, the virtual session isplaced into an active state and session communications resumes as thoughuninterrupted. A remote unit, a virtual session server, and acommunication system including the remote unit and the virtual sessionserver are presented to support virtual sessions communications. In oneembodiment, the virtual session server manages a logon session betweenthe remote unit and a server-side application program. The virtualsession server emulates the presence of the remote unit to theserver-side application program and thereby maintains the logon. Inrelated embodiments, the server-side application program involves acommunication server capable of relaying messages and establishingcommunication channels with the remote unit using the virtual sessionlayer.

A second aspect of the present invention involves a method of accessinga central server from a remote unit. A first step involves presenting aworkflow to a user via a user interface. A second step involvespredicting, based upon the workflow, when the user will requireconnectivity to the central server. Based upon the prediction and in thebackground, a third step involves initiating the establishment of aphysical layer communication connection to the central server.

A third aspect of the present invention involves a method ofestablishing a connection with a low connection set-up time. In a firststep, the method initiates the establishment of a communicationconnection to be used to communicate with a remote entity. Next themethod communicates application layer data via the communicationconnection prior to the completion of a line-rate negotiation process.Next the method negotiates a line speed in the background.

A fourth aspect of the present invention involves a method of setting upand operating a virtual session. This method can be practiced by aclient-side remote unit or a server-side virtual session server. A firstconnection is established to a remote entity. This first connection isthen used to establish a set of parameters needed to define acommunication session with the remote entity. Next the first connectiondisconnected and a set of communication session parameters aremaintained. Next a second connection to the remote entity is establishedand an authorization sequence is communicated. The communication sessionis next reactivated using the communication session using the secondconnection. A related method is used to allow a remote unit to maintaina virtual communications presence with a remote communication servercoupled to a virtual session server.

BRIEF DESCRIPTION OF THE FIGURES

The various novel features of the present invention are illustrated inthe figures listed below and described in the detailed description whichfollows.

FIG. 1 is a block diagram representing an embodiment of a remote unitdesigned in accordance with the present invention.

FIG. 1A is a block diagram illustrating a layered software architecturerepresentative of the communication protocols of the present invention.

FIG. 2 is a block diagram illustrating a system comprising a remote unitoperably coupled to a server via a communication medium.

FIG. 3 is a flow chart illustrating a method of processing whereby anapplication program implementing a workflow provides a prediction ofwhen the user will need a connection and establishes a connection in thebackground just before it is needed.

FIG. 4 is a flow chart illustrating a method of establishingcommunication with a remote entity with a near-immediate set up time.

FIG. 5 is a flow chart illustrating a method of communicating bymaintaining a virtual presence without the need to continuously maintaina physical connection.

FIG. 6 is a flow chart illustrating a method of processing performed ona server acting as a front-end to an application program to maintainsessions for remote users who are not continuously physically connectedto the application program.

FIG. 7 is a flow chart illustrating a method of processing performed ona server managing virtual connections for users who are not continuouslyphysically connected to the server.

FIG. 8 is a flow chart illustrating a method of processing performed bya remote unit to accept different types of incoming calls.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 is a block diagram representing an embodiment of a remote unit100 designed in accordance with the present invention. The remote unit100 may be implemented as a laptop computer, a personal digitalassistant, a desktop computer or workstation, or as a dedicated unitcustomized for a particular application. The remote unit 100 includes acentral processing unit (CPU) 105 connected to a central bus 110. Thecentral processing unit may be implemented using an availablemicroprocessor, microcontroller, or customized logic. For example, aPentium™ processor from Intel Corp. may be used to implement the CPU105. The central bus is preferably constructed as a set of unbrokenwires used to carry signals between a set of component subsystems withinthe remote unit 100. It should be noted, in some embodiments of thepresent invention, the bus 110 may be implemented equivalently using aset of direct parallel and/or serial connections between individualmodules. The bus 110 as illustrated in FIG. 1 shows a low cost and apreferred means to connect the illustrated subsystems. Any combinationof bus connections and direct serial or parallel links may be used toimplement the connection structure provided by the bus 110. Differentimplementations represent different price-to-performance ratios and willbe dictated by the needs of an individual embodiment. The bus 110 alsocomprehends multi-layered bus structures. For example, some embodimentsmake use of a local processor bus connected to the CPU 105, and aperipheral interconnect bus for other subsystems. In multi-layered busbased designs, the different layers are preferably connected by busbridges. All of these and other equivalent embodiments of the bus 110are known to the skilled artisan. From here forward, the discussion willcenter on the illustrated embodiment of the remote unit 100 whereby allsubsystems are directly connected via the bus 110. Embodiments where thebus 110 represents a different physical interconnection topology areimplicitly included in the discussion below.

A memory 115 is also coupled to the bus 110. The memory 115 may beimplemented using static random access memory (SRAM) or dynamic randomaccess memory (DRAM). One type of SRAM is read-only memory (ROM).Preferably the memory 115 includes a ROM for use at boot-up, and a DRAMto hold a significant amount of data storage for use while executingprograms. The remote unit 100 also includes a control program module120. The control program module 120 is controllably coupled to the CPU105 and is also coupled to the bus 110. The central program module 120typically exists as a software module executed from the memory 115 bythe CPU 105. The control program module 120 effectively configures theremote unit 100 to operate in accordance with aspects of the presentinvention as discussed herein below.

A communications module 125 is also coupled to the bus 110. Thecommunications module includes at least one communication interface toallow the remote unit to communicate with a remote entity such as avirtual session server as will be discussed in detail hereinafter. In apreferred embodiment, the communications module 125 includes a pluralityof communication interfaces. For example, a first interface 126 providesa wireless link, and a second communication interface 127 provides oneor more wireline links. Also, the wireline communication interface 127may include a standard telephone modem interface and a packet styleinterface designed to plug directly into an Ethernet connection to becoupled to a local area network (LAN), a wide area network (WAN) or theInternet. The Internet is the well-known and ubiquitous World Wide Web.In some embodiments, the communications module 125 includes acaller-identification packet processor. A caller-identification packetprocessor receives a caller-identification packet, extracts informationtherefrom, and passes the information to the CPU 105.Caller-identification packets may be advantageously used to identifyincoming calls with a virtual session as discussed in connection withFIG.'s 7-8. The communications module 125 may optionally include a voiceinterface to allow a user to engage in telephone conversations using theremote unit 100. In this case a separate handset or a built-in handsetmay be used. Alternatively a speakerphone may be built into the remoteunit using a microphone, a speaker, and an echo canceller.

The remote unit 100 also includes a display monitor 130. The displaymonitor 130 is also coupled to the bus 110. The display monitor 130 ispreferably implemented using a liquid crystal display (LCD), althoughother display technologies may equivalently be used. Also connected tothe bus 110 is an optional universal input-output (I/O) module 135. Theuniversal I/O module includes a coupling to a set of external devices138. The external devices are preferably data collection units asdescribed below. The universal I/O module preferably provides a standardlink layer interface to the software module 120 executing on the CPU105. The remote unit 100 also preferably includes a mass storage device140. The mass storage device 140 is also connected to the bus 110. Themass storage device is preferably implemented using magnetic disk oroptical disk technology, but any mass storage device, to include anon-volatile memory, may be used.

The remote unit 100 also includes a power module 145. The power moduleis preferably and optionally coupled to the bus 110 to receive powermanagement control information. The power module preferably includes abattery, an alternating current (AC) connector, a direct current (DC)connector, and a power management control interface. The AC connectorallows the remote unit 100 to be powered from a standard 110 V walloutlet. The DC connector allows the remote unit 100 to be powered from avehicle, for example by plugging the unit into a cigarette lighteroutlet. Either of these connectors may be preferably used to also chargethe battery in the remote unit. The power module 145 is coupled tosupply power to a power bus which is connected to all subsystems.Depending on the power management configuration of an individual system,different subsystems may accept power from separate connections to allowportions of the remote unit to be selectively turned off while they arenot being used.

The remote unit 100 is operative to execute an application program. Theapplication program is operative to supply a sequence of interactivescreens or a menu based interface to the user. The sequence ofinteractive screens or a particular usage of a menu based systemimplements a workflow. In an example embodiment, the remote unit 100 iscarried by a home-care professional. The home care professional has asequence of procedures which need to be implemented in the course ofworking with a patient. This sequence of procedures gives rise to theworkflow implemented in the control program 120 which executes on theremote unit 100. In the example embodiment involving a home-careprofessional, the universal I/O module is connected to a set ofperipheral units to collect vital information such as blood pressure,temperature, insulin level and the like. Other information such as thepatient's weight may be entered manually by the home-care professionalas a part of the workflow. At certain times in the workflow, an externalcommunication connection will be needed because data may need to beuploaded or downloaded to/from a central server. In accordance with thepresent invention, the remote unit 100 is operative to provide aseamless and transparent virtual presence with the central server. Ingeneral, the central server may itself be segmented into two or moreindividual central servers. The discussion herein focuses on anembodiment whereby a virtual presence is maintained with a singlecentral server having multiple server components. The present inventionmay be equivalently practiced by embodiments involving a virtualpresence with more than one central server. Thus, one remote unit couldmaintain multiple virtual connections to totally separate serversystems. In such a configuration the application workflow would dictateto which server system the remote unit would physically connect whileother servers remain virtually connected.

A key aspect of the operation of the remote unit 100 is its ability tomaintain a virtual presence with the central server without continuouslymaintaining a physical connection. The remote unit 100 is operative toprovide communications when it is needed without the user needing to gothrough a set of normally associated connection sequences. For example,in accordance with one aspect of the invention, the user need onlyinteract with the screens provided to implement the workflow while theremote unit 100 automatically sets up a connection in the background tobe available when it is needed. In embodiments where filesynchronization is not an issue or is handled using file semaphores, thesoftware implementing the workflow automatically downloads informationbefore it is needed and later automatically uploads new informationafter it has been gathered. This way, users need not even be aware theyare not connected at all times. The user is not burdened with the needto connect and reconnect, and need not be burdened with downloading anduploading data. The user experiences the full benefit of beingcontinuously connected to the central server without the associated costof remaining continuously connected via a physical connection. Insystems where file semaphores are not employed, the physical connectionis established just before the workflow indicates it will be needed andis dropped when the workflow indicates it will not be needed for sometime. Further details of the operation of the remote unit 100 are givenin the discussions provided in connection with FIG.'s 2-8.

A central aspect of the present invention involves the concept of a“virtual session.” A session as defined herein is similar to thedefinition provided in the open systems interconnect (OSI) referencemodel from the International Standards Organization (ISO). The OSI modelis a model of a layered software structure used in computercommunications. A software system which implements a layered model ofcommunication is known as a “protocol stack.” The OSI model is wellknown and divides a computer communications process into seven layers.At each layer is a software module which communicates with a peersoftware module at the same layer. Within a protocol stack, each layercommunicates with the layer above and/or below. Actual communicationsystems often deviate from the seven layer OSI model. A protocol stackusing basic concepts similar to the seven layer OSI model is nextdiscussed which represents an aspect of the present invention.

FIG. 1A illustrates a representative protocol 150 used to support thepresent invention. At the top layer is an application session layer. Afirst protocol stack with an application session layer software module151 communicates with a second protocol stack with an applicationssession layer software module 152. The application session layersoftware module 151 is typically implemented as a client-side softwaremodule which presents a user interface to a user. The applicationsession layer software module 152 is typically implemented by aserver-side software module operative to provide communication and/orcomputer related services to the client-side software module. Forexample the application sessions layer software module 152 may involve alogon session with a database program, or may represent a unifiedmessaging server supplying voice mail, email and fax mail. Similarly,the application session layer software module 152 may involve atelephony application operative to provide a packet switched or acircuit switched telephone connection to the client-side applicationsession layer software module 151. One layer down in the protocol stackis a virtual session layer. In the example embodiment, the firstprotocol stack implements a virtual session layer software module 154 inthe remote unit 100. The virtual session layer software module 154communicates with a peer virtual session software module 156 via thepeer-to-peer communication path 182. In the exemplary embodiment, thevirtual session layer software module 156 is implemented within avirtual session server as discussed in connection with FIG. 2. Thevirtual session server typically maintains a table linking one or moreapplication sessions to a virtual session. For example, this linking ofapplication sessions into the table structure may be accomplished byincluding a pointer to a data structure containing application sessioncontrol data, or by placing the data structure holding the applicationsession control data directly in the table structure. Additionally, thetable structure allows the virtual session server to maintain aplurality of virtual sessions with a plurality of client remote units.In the OSI model, the OSI-session layer provides a set of rules used toestablish and terminate data streams between nodes in a network. A setof OSI-session layer services include establishing and terminating nodeconnections, message flow control, dialog control, and end-to-end datacontrol. The session layer controls dialogs, which involveconversational protocols as used in mainframe computer terminalcommunications. The virtual session layer 154, 152 of the protocol 150may perform any of these functions in addition to maintaining the tablelinking to the application sessions.

The next software modules in the first protocol stack are the transportlayer 158, the network layer 164, the link layer 170 and the physicallayer 176. These software modules respectively perform peercommunications with the server-side protocol stack's software modules160, 166, 172, and 178. The physical layer defines the low-levelmechanical and electrical channel protocols and the physical connectionitself. These four lower layers are well known in the art of datacommunications and can be implemented in various well-known ways.Likewise, alternative and equivalent protocol stacks may be constructed,for example, with the transport layer removed, various layers mergedinto one, or new layers added.

An important aspect of a virtual session oriented communication protocolsuch as the protocol 150 is the ability to maintain a peer-to-peervirtual session communication path 182 without the presence of aphysical layer communication path 180. The physical layer communicationpath 180 represents a physical layer communication connection, forexample, a wireline connection, a cellular wireless connection, or anetwork connection to the Internet. When the physical layercommunication path 180 is disconnected, no physical channel existsbetween the client-side software and the server-side software, and thephysical layer communication path 180 is said to be in a “disconnectedstate.” However, data structures maintained at the virtual session layerallow one or more peer-to-peer application session communication paths184 to remain in a deactivated but existent state, even when thephysical layer communication path is in the disconnected state.Likewise, the virtual session communication path 182 established betweenthe remote unit and the virtual session server also remains in adeactivated but existent state. This is made possible through the use ofthe table structure maintained in memory which retains its informationafter the physical layer communication path 180 has been disconnected.When the physical layer communication path 180 has been reconnected, thephysical layer communication path is said to be placed into a “connectedstate.” At such time, the virtual session layer software modules 154 and156 are operative to reactivate the virtual session layer communicationpath 182 and the application sessions layer communication path 184. Whenthese paths are reactivated, peer-to-peer communication may once againproceed over the application session layer communication path 184 andthe virtual session layer communication path 182.

As defined herein, a distinction is made between a communication sessionand an application session. A communication session is defined as asession between nodes or communication endpoints, and an applicationsession is defined as a session between applications. For example, aremote unit may establish a communication session with a central server.In this case a communication session is established between thecommunication endpoints, i.e., the remote unit and the central server.Also, an application program running on the remote unit may need toestablish an application session with an application program running onthe central server. In such case an application session is created usinga connection stream provided and governed by the communication session.A table structure is used to maintain both the communication sessionparameters and the application session parameters. For example, a firstuser authentication parameter may be used to establish a communicationsession with the server. A second user authentication parameter may beused to establish an application session with the application program.This second user authentication parameter may include a useridentification parameter and a password, for example.

In light of the aforesaid concepts, a “virtual session” is next defined.A virtual session is preferably implemented as a communication sessionas defined above. A virtual session, like an OSI session, provides a setof rules for establishing data streams between nodes or endpoints. Thevirtual session also may provide other session features such as dialogcontrol, message flow control, and end-to-end data control. A virtualsession is controlled using a data structure which provides a way toassociate the virtual session with the lower layers of a protocol stack,leading down to a physical layer. As mentioned above, in mostembodiments, a virtual session is implemented as a communicationsession. Application sessions are then added onto the virtual session asconnection streams within the communication session.

In a virtual session, a communication session may be suspended with someor all of the lower layers of the protocol stack missing. In particular,a virtual session may be maintained while a physical layer connectionhas been removed. The virtual session can then be reassociated with aphysical layer connection at a later time. The virtual session thus alsopreferably provides connect and reconnect rules used to establish avirtual session and then to reassociate the virtual session to a newphysical connection to set up a new data stream in support of a dialogat a later time. Related activities such as the initiation of dial-outlinks to reestablish a physical layer communication path is alsopreferably handled by the virtual session in response to a signal froman application layer program.

An aspect of a virtual session is the maintenance of an applicationbetween an application program and a virtual session server as will bedescribed below. A virtual session server acts as a proxy agent for aremote unit. When the remote unit is not connected via a physical layercommunication path, the virtual session server maintains aproxy-presence with the application program on behalf of thedisconnected remote unit. At a later time, when the remote unitreconnects into the virtual session by passing a set of communicationsession authentication parameters, the remote unit is thereby grantedaccess to one or more application sessions which have been maintained inproxy by the virtual session server.

In a preferred embodiment, the virtual session uses a set ofauthentication parameters and a set of encryption keys to maintain asecure connection. A separate set of authentication parameters is usedby an application running on the remote unit to gain access to anindividual application session. Once the application session has beenestablished over a virtual session, a table is used to maintain a set ofparameters needed to maintain the application session, even though nophysical layer connection exists between the endpoints of the virtualsession. When a virtual session data structure is set up and no physicallayer connection exists to support communication over the virtualsession, the virtual session is said to be “inactive.” When a virtualsession data structure is set up and a physical layer connection doesexist to support communication over the virtual session, the virtualsession is said to be “active.” A transition from an active state to aninactive state is called “deactivating a virtual session,” and atransition from an inactive state to an active state is called“activating a virtual session.” The process of transitioning from anactive state to an inactive state is also known as “disconnecting from aphysical connection.” When this occurs, the physical layer connection isno longer available to support communication over the virtual session.In a preferred embodiment, a table structure is used to maintain thevirtual session parameters as well as a set of parameters for eachapplication session established over the virtual session. When a virtualsession is activated, there is no need to reauthenticate the individualapplication sessions. This is because the table typically includes auser identification parameter, a user password, a set of applicationsession parameters, a communication session identification parameter,and an encryption key for the communication session. Additional datasuch as modem initiation parameters may be added to the table asrequired by the system configuration and usage.

Referring now to FIG. 2, a block diagram illustrating a systemconfiguration 200 is shown. The system configuration 200 includes theremote unit 100 operatively coupled to a communication interface 210. Adirect wireless link 207 optionally couples the remote unit 100 to thecommunication interface 210. A direct wireless link is used inembodiments where the remote unit 100 maintains a direct wireless linkwith the communication interface 210. The communication interface thusprovides an air interface for the direct wireless link. Alternatively orin addition to the direct wireless link 207, a wireline link 208 couplesthe remote unit 100 to the communication interface 210. Thecommunication interface 210 maintains the connection 208 via a networkinterface coupled to a public switched telephone network (PSTN) or anetwork such as the Internet. This connection 208 may itself involve amicrowave link, a wireless link through a public switched cellularnetwork or a wireless link in a PCS network.

The communication interface 210 is preferably coupled to a communicationserver 212. The communication server 212 may be thought of asgeneralization of a private branch exchange (PBX). The communicationserver 212 accepts tele-traffic from any variety of sources and providesswitchable connections to couple different sources together. Forexample, the communication server 212 may be implemented as a PBX whichreceives a set of direct inward dial lines from a central officeoperated by the public telephone network. The PBX then provides localusers with extensions and allows local users to call each other bydialing the last four digits of their telephone numbers. The PBXtypically provides an outside line to a user once the user has dialed anine.

The communication server 212 may also be configured to provideadditional types of connections, such as packet based voice and videoconnections according to the H.323 international standard. In such anembodiment, the communication server 212 provides a gateway functionpassing calls between the public switched telephone network and anetwork such as the Internet. The communication server 212 may alsoprovide other communications services such as voice mail, email,fax-mail, call distribution and the like. In systems involving Internettelephony, the communication server may operate only using packetprotocols and not include an interface for circuit switched connections.

The communication interface 210 is also coupled to a virtual sessionserver 215. The virtual session server 215 is coupled to a tablestructure 225 and an application program 220. The table structure 225 ispreferably implemented as a software entity and may be located in amemory module within the server 215. The virtual session server 215 maybe implemented as a software entity which executes on a hardwareplatform. The hardware platform of the virtual session server 215 may bedesigned with an internal architecture similar to the remote unit 100but is designed to provide a higher computation capacity and to handlemultiple users. When supporting a virtual session server, the displaymonitor 130 is optional as users may control the virtual session server215 remotely. The control program module 120, when implemented in thevirtual session server 215 provides the server side of the communicationprotocols discussed in connection with FIG.'s 3-8. Hence the remote unit100 and the virtual session server 215 involve similar architectures andrespectively implement the client and server sides of a set ofvirtual-session-related communication protocols of the presentinvention.

The application program 220 may execute on the same hardware platform asthe virtual session server 215. In general, both the virtual sessionserver 215 and the application program 220 may be implemented assoftware modules running on personal computers, workstations, dedicatedcustom hardware, mainframe, or file servers. For example, the virtualsession server 215 may be implemented as a software module running on anUltaSparc™ workstation or file server from Sun Microsystems Inc. Thesoftware may be written to execute over a multitasking operating systemsuch as Solaris™ from Sun Microsystems Inc. or WindowsNT™ from MicrsoftInc. In a first preferred embodiment, the application program 220includes a distributed database program running on a collection ofnetworked servers such as Sun UltraSparc™ servers. In a second preferredembodiment, the application program may itself be a communication serveras provided by an Internet service provider (ISP).

The system 200 is operative to implement a set of virtual sessioncommunication protocols according to the present invention. The remoteunit 100 establishes a session via the virtual session server 215 to setup a virtual presence with the application program 220. Preferably, thevirtual session server 215 also provides a link to the communicationserver 212 to provide it access to the virtual session. When the remoteunit 100 disconnects from a physical connection 207 or 208, the virtualsession is maintained within the table structure 225. When the remoteunit 100 later wishes to reestablish communication with the applicationprogram 220, the virtual connection server 215 is operative to keep thevirtual session active and to allow the user rapid and nearlytransparent access to the application program 220. Similarly, thevirtual session also preferably is used to provide a virtualcommunication link between the communication sever 212 and the remoteunit 100. In some systems, a first virtual session is establishedbetween the remote unit 100 and the application program 220, and asecond virtual session is established between the remote unit 100 andthe communication server 212. The details of the operation of thevirtual session server 215 and the virtual session protocols arediscussed below in connection FIG.'s 3-8. Before proceeding to theseportions of the detailed description, two embodiments of the system 200are described.

In a first exemplary embodiment of the system 200, a mobile worker suchas a home-care professional operates the remote unit 100 to establishand maintain a virtual session with the application program 220. In oneembodiment, the application program 220 controls access to a databaseincluding complete medical and billing records for individual patients.Depending on working conditions, the home-care professional may requireaccess from a wireless connection such as a cellular connection, or elsemay be able to communicate via a wireline connection provided within apatient's home. As the home care professional proceeds through a givenworkflow, the professional will eventually need to communicate with theapplication program 220. When this time arrives, the present inventionis operative to establish a physical connection between the home-careprofessional and the application program 220. The professional need notbe aware the physical connection has not been available since the timethe virtual session was first established. The virtual session ismaintained by the virtual session server 215 and the protocols of thepresent invention are employed to ensure such a virtual connectivity isprovided without the need for the remote unit 100 to be continuouslyconnected to the application program 220.

In a second exemplary embodiment, the application program 220 is acommunication server operated by an ISP. In this example, the remoteunit 100 is operated by an Internet user. After the Internet user hasremained inactive for a period of time, the connection 208 isterminated. At a later time, when the Internet user clicks on ahyperlink, thus demanding service, a short delay is incurred while theconnection is reestablished. The remote unit is provided access withoutthe user needing to reestablish a connection. When the user clicks on ahyperlink, the telephone is rapidly dialed without presenting dialingtones to the user. An authentication packet and a request packet aresent using a low data rate protocol such as one used for line-ratenegotiation in modems. The user is authenticated by the server and therequest packet is forwarded through the Internet to the Internet sitereferenced by the hyperlink. While the remote Internet server takes timeto respond to the request, a higher line speed is negotiated in thebackground without burdening the user. Because a home Internet user usesthe same analog connection between the user's premises and a networkinterface, the modem parameters may be preferably saved by the server inthe table 225 to accelerate re-negotiation. The user is provided accessalmost immediately, and the connection is reestablished transparently.Note while this example focuses on an Internet application, thetechniques apply to any application whereby a network site is accessedby activating a hyperlink.

As will be discussed below, the virtual session between the remote unit100 and the virtual session server 215 provides a means to initiatetransfers in both an uplink and a downlink direction. The uplinkdirection is from the remote unit 100 to the virtual session server 215,and the downlink direction is from the virtual session server 215 to theremote unit 100. A virtual session is said to exist between the remoteunit and the virtual session server 215. This virtual session may beused to create individual virtual sessions between the remote unit 100and the application program 220, and between the remote unit 100 and thecommunication server 212. For example, an uplink connection isestablished, and when a home Internet user has been inactive for aperiod, the connection is dropped. As discussed above, the connection isreactivated transparently when the user once again activates an Internetlink, as in an Internet browser. In the same example, a user may have anemail reader program connected through a virtual session. If an emailcomes in for the user and the virtual session is in place, the emailshould be rapidly forwarded to the user. To do this, the user's phone isdialed in a downlink direction dial-out link by the virtual sessionserver 215 via the communication interface 210. The remote unitpreferably suppresses the first ring and examines caller identificationdata. When the caller identification data indicates the calling party isthe virtual session server 215, the remote unit 100 automatically picksup the call and in this example, accepts the email. If calleridentification is not used, a substitute protocol should be employed toassure that connection has been made to the proper application sessiondefined within the virtual session. The substitute protocol preferablyinvolves sending a packet header at the beginning of a call whereby thepacket header contains one or more fields which identify associated theapplication session. Again, the user need not even realize a connectionhas been reestablished. Instead, the user receives the email message asthough the connection had remained continuously active.

Another type of operation may occur when the user of the remote unit 100is actively connected to the virtual session server 215 and a call comesin directed to the remote user's extension. At this point the call ispreferably converted into packets and is sent to the user over theexisting connection. In an alternative embodiment, the physicalconnection is automatically and temporarily dropped and the call isforwarded to the remote user. The virtual connection to the applicationis maintained through the virtual server. The communications module 125preferably analyzes caller-identification data to determine the incomingcall is a voice call to cause the optional telephone aspect of theremote unit 100 to ring. More details related to the foregoing systemoperation are discussed in connection with FIG.'s 3-8 below.

The virtual session server 215 is able to maintain an open logon to theapplication program 220. In one embodiment, the virtual session server215 executes a client-side software which interfaces with theapplication program 220. That is, if the application program 220 employsa client-server architecture, the application program 220 will implementa server-side software module which interacts with the client-sidesoftware. The server-side program performs database or other serveroriented functions, while the client-side software provides a userinterface to the user. The remote unit 100 can then control theoperations of the virtual session server 215 using standard remotesession software. An example of commercially available remote sessionsoftware is PCAnywhere™ from Semantec Corporation. In anotherembodiment, the virtual session server executes the client-side softwarein parallel with the remote unit. In still another embodiment, theremote unit executes the client-side software, and the virtual sessionserver merely provides a connection stream to pass data from theapplication program 220 to the remote unit 100. When the virtual sessionis in a deactivated state, the virtual session server emulates theclient-side software as needed to maintain an active session with theapplication program 220 in the absence of the remote unit 100. A widevariety of equivalent techniques may be used to allow the virtualsession server 215 to maintain a pointer or re-entry point into theapplication 220 while acting as a proxy agent to maintain the logon forthe remote unit 100. A table structure is preferably used to allow thevirtual session server to simultaneously maintain a plurality of logonsfor a plurality of different remote units.

In some embodiments, the remote unit 100 may need to maintain aplurality of virtual sessions with a plurality of different virtualsession servers. For example, an independent contractor may providehome-care services for two distinct health regions. Each health regionmay use a separate database. The remote unit 100 may then access theseseparate databases using a first and a second client-side applicationsoftware module. During the course of a day, the remote unit may need toactivate the first or the second client-side application softwaremodules. In such case the remote unit 100 is operative to maintain atable structure similar to the table structure 225. The table structuremaintained by the remote unit links an application software modulethrough an application session to a virtual session. When the firstclient-side application program demands access to a first database, thevirtual session layer software 154 in the remote unit causes a physicalconnection to be established to support virtual session communications182 with the first database application program. Likewise, if the secondclient-side application software module desires to access a seconddatabase, the virtual session layer software module 154 activates aphysical layer connection back to the second database server. In otherapplications a single application program may be used which accessesinformation on more than one virtual session server. In such case asingle application program can select the virtual session to activatebased on the communications request generated from within theapplication program. In still other embodiments, a single physicalconnection 208 or 207 may be used to communicate with the communicationinterface 210. The communication server 212 then forwards packets to afirst local virtual session server such as the virtual session server215. If the received communication packets are destined for a secondvirtual session server, then the communication server 212 preferablyforwards the packets to a remote virtual session server using a networkconnection such as an Internet connection.

Referring now to FIG. 3, a method 300 is illustrated to show how theremote unit 100 preferably operates to activate a connection. The method300 is preferably practiced by the remote unit 100 in support of avirtual session with the virtual session server 215. A first step 305 ofthe method 300 involves actions within a workflow process 305. Theworkflow process 305 includes the step 305 of the method 300 and alsoperforms other activities to interact with a user's workflowrequirements. Control loops from the first step 305 back to the firststep 305 via a control path 310. The workflow, as discussed above, ispreferably made up of a menu system and/or a set of interactive screenstraversed by a worker in performing a set of tasks. For example, ahome-care professional's workflow involves accessing and displaying apatient's medical record, entering a set of data into the medicalrecord, and performing tasks indicated by the doctor's directions asannotated in the medical record. In this example, as the home-careprofessional moves from one screen to the next, control loops via thecontrol path 310. The workflow process 305 is an application programwhich executes on the CPU 105. The workflow process 305 is preferablyimplemented as a process running on the CPU 105 in a multitaskingoperating environment. A multitasking operating environment is one inwhich multiple programs or processes may execute in parallel by sharingtime slots within the CPU 105. Multitasking operating system software iswell known and is readily available. In a multitasking-programmingenvironment a first process may execute in a normal fashion and providean interface to a user. At the same time a second process may beexecuted by sharing CPU cycles without the user's intervention orknowledge. In such a case the second process is said to be a backgroundprocess or is said to perform background processing. At some point inthe course of the workflow, a physical layer communication connectionwill be needed to communicate information between the remote 100 and theapplication program 220.

When a step in the workflow process 305 is performed leading up to theneed for a physical layer communication connection, control next passesfrom the first step 305 to a second step 320 via the control path 315.The control path 315 is activated when the workflow process 305 providesa prediction indicating a physical layer communication connection willsubsequently be needed. In some cases the prediction may be providedright when the physical layer communication connection is needed. Inother cases, the prediction 315 may be used to initiate backgroundprocessing to download data which will not be needed until a later time.In menu based systems, the prediction 315 may be learned by observingthe workflow habits of a user. The prediction 315 is a function of theapplication program or workflow 305 and is optional. In the second step320, a connection is established in the background. Backgroundprocessing enables the user to continue interacting with the workflowprocess 305 while a physical layer communication connection issimultaneously and transparently established. That is, the physicallayer communication path is reestablished without inhibiting the userfrom interacting with the workflow 305. Hence when control passes viathe control path 315 to the step 320, control preferably simultaneouslypasses via the control path 317 back into the workflow. The backgroundprocess is preferably forked as a separate task and two execution flowsproceed in parallel by time sharing the CPU 105. Multitasking is wellknown in the art and is implemented using interrupt based processing. Inalternative embodiments the control path 317 may be deleted and a singlecontrol flow may be implemented using the control path 315. However,this embodiment may require the user to wait for the connection to beestablished and is hence not deemed to be the preferred embodiment ofthe method. Other equivalent embodiments set up the communication pathtransparently by multiplexing the CPU 105's computation cycles fromwithin the workflow process or some other process.

Once control has been forked via the control path 315 to the second step320, a dialer within the communications module 125 preferably dials toestablish a physical layer communication connection with thecommunication interface 210. In embodiments using dedicated radio links,the connection may be established over the wireless link 207. Onepreferred embodiment of a remote unit 100 incorporates a cellular radio.In this case the dialer dials a telephone number and a connection isestablished using a public switched cellular telephone network so thatthe connection is set up on the link 208. Stationary Internet basedembodiments perform the second step 320 by dialing a telephone numberusing an automatic dialer which dials a land line connection for amodem. In all cases, it is preferred to suppress the dialing tones andline-rate negotiation signals so the connection may be establishedtransparently to the user.

Control next passes from the second step 320 to a third step 325. In thestep 325, an authentication code is transmitted from the remote unit 100to the communication interface 210. This authentication code is thenpassed to the virtual session server 215. The virtual session serverevaluates the authentication code to determine if access is to bepermitted. In a preferred embodiment, the authentication code involves adigital signature as is known in the field of public key cryptography.In a preferred embodiment, all transmissions are encrypted using publickey cryptography. Some systems may be implemented using variousencryption standards such as secure sockets layer based encryption. Theamount of authentication and encryption used in any given embodiment isleft to the system designer, but preferably all transactions areencrypted as described above.

Control next passes from the third step 325 to a fourth step 330. In thefourth step 330, a session is established/reactivated with the virtualsession server 215. The session is established the first time the method300 passes control to the step 330. Subsequently the step 330 isoperative to reactivate the session with the virtual session server.When the session between the remote unit 100 and the virtual sessionserver 220 is reactivated, virtual session communications resume. Atthis point, the virtual session server 215 correlates information storedin the table structure 225 with the connection and provides the remoteunit 100 access to the application program 220. If no data is stored intable structure 225, access is provided to a default logon screenallowing remote unit 100 to establish a new application session. Thevirtual session server 215 then populates the table structure 225 toestablish a virtual session. The step 330 involves setting up a streamconnection between the workflow process 305 and a protocol stack. Theprotocol stack is operative to read information bits from the streamconnection and communicate the bits across an external communicationlink. Bits received over the external communication link are convertedby the protocol stack into information bits to be sent back to theworkflow process 305 across the connection stream. Once the appropriatecommunication processes are configured, control next passes back to theworkflow process 305. Due to the aforementioned forking operation, thepassing of control back to the workflow process 305 may have alreadyoccurred via the control path 317. In this case the passing of controlfrom the step 330 to the workflow process is not explicitly performed.

When control loops back from the fourth step 330 to the workflow process305, a physical layer communication connection is activated for currentor subsequent communication. When the user gets to a point in theworkflow where communication with the application program 220 is needed,the connection has already been transparently set up in the background.Hence the user gets the feel of being connected to the applicationprogram 220 all the time, where in fact the remote 100 is connected viaa physical channel to the application program 220 only a fraction of thetime. This virtual connection saves communication resources and moneywhen a toll is charged based on the amount of usage on the link 207 orthe link 208. In some embodiments, the fourth step 330, or an executionthread within the workflow 305 is operative to upload or downloadinformation in the background. This way the user has ready access todata contained in the application program 220, but in general a shorterconnect time is required. While with prior art systems it is burdensomefor a user to connect to a central server and download and uploadinformation, with the virtual session of the present invention the userneed not even be aware this process is occurring. Rather the user feelsas though he or she is continuously connected with a fast connectionbecause the data needed at a given point in the workflow is alreadyavailable locally or has been uploaded in the background transparentlywithout user intervention. In systems where server synchronization is anissue, file semaphores and/or direct active sessions not employinguploading and/or downloading of records may be used.

Based on another point in the workflow, another prediction is made topredict when the communication channel will not be needed for some time.For example, it may be known, based on the workflow, the home-careprofessional will next perform a sequence of tests and enter data into ascreen displayed on the remote unit. Only at a later time will theworkflow come to a point where this information is to be uploaded to theapplication program 220. When such a prediction is made, control passesfrom the first step 305 via the control path 318 to a fifth step 335.The fifth step 335 is operative to deactivate the connection establishedover the link 207 or the link 208. The step 335 may optionally involveforking a separate execution thread or otherwise accessing a separateprocess in a multitasking environment. Alternatively, the fifth step 335may be performed by executing a set of instructions in the workflowprocess 305. At a later time, a prediction may be made indicating thelink 207 or 208 needs to once again be activated, whereby control againpasses over to the second step 320 via the control path 315. It shouldbe noted different systems will typically set their prediction timesaccording to the economic conditions involved. For example, in somesystems the first minute of connection time may cost five times as muchas all subsequent minutes. In this case predictions would be preferablyset according to a criterion to minimize cost by not establishing andterminating connections more often than necessary. If a flat rate werecharged per minute connections would be set-up and terminated moreoften. If automatic uploading and downloading is performed in thebackground, a very efficient use of air-time can often be achieved whilepresenting the user with the appearance of being continuously connectedto the application program 220.

Referring now to FIG. 4, a method 400 of establishing a communicationlink with low delay is illustrated. The method 400 may be practiced byboth the remote unit 100 and the communication interface 210. Thismethod is most applicable to systems involving modems whereby digitaldata is transferred over an analog channel requiring receiver training.Receiver training involves transmitting data sequences through a channeland allowing a receiver to adjust its receiver parameters. Receiverparameters include echo canceller and equalizer filter coefficients.Most systems also adjust their data rates and signal constellationsbased on observed conditions. In modems, this entire process is known asline-rate negotiation. Prior art systems involving receiver training aretedious to use because they force the user to wait while the receiver istrained. Most systems play the training signals though a speaker toallow the user to hear the training process. This lets the user knowwhat the computer is doing for the duration of the delay. The method 400improves upon this prior art solution by allowing the user to gainalmost immediate access without a significant delay.

In a first step 405, a protocol stack or other process practicing themethod 400 receives a communications request from a user program. Forexample, this occurs when a user clicks on an icon to initiate theestablishment of an Internet connection. Control next passes to a step410 where the connection is initiated. This step typically involves anautomatic dialer dialing the number of an Internet service provider(ISP). The ISP software may be implemented as a communication serverapplication corresponding to the application program 220. In this caseaccess to the application program is governed by the virtual sessionserver 215.

Control next passes from the second step 410 to a third step 415. In thethird step 415 an authorization sequence is exchanged. In a preferredembodiment public key cryptography involving digital signatures and keysis used. Embodiments involving a virtual session server 215 either setup a session or activate an existing session during the third step 415.Control next passes from the third step 415 to a fourth step 420. In thefourth step 420, one or more initial application layer data packets aretransmitted across the connection using a low speed protocol. A lowspeed protocol is used by the transmitter and receiver when performingline-rate negotiations. For more details of line-rate negotiationprotocols, see, for example, the V.34 and V.90 standards from theInternational Telecommunications Union. In the present invention, thelow speed protocol is used to transmit application layer data before theline-rate negotiation procedures have completed. This avoids the needfor the user to wait for line-rate negotiation to complete before beingable to access a communication path.

Control next passes from the fourth step 420 to a fifth step 425. In thefifth step 425, initial data is displayed. Software located locally inthe remote unit 100 preferably contains high-volume graphics relateddata so that the initial data exchange of the step 420 only requires asmall amount of data to be transferred. For example, the user logs ontothe Internet and almost immediately sees a screen of informationindicating the user is connected and the system is ready to acceptinputs. This is made possible by displaying locally held screens ofgraphical data and allowing a small amount of specific information suchas time, date, and headlines to be received and displayed. If the userthen immediately clicks on a link, an application layer request packetis sent using the line-rate negotiation protocol's data format. Thisallows the user to immediately begin making requests before theline-rate negotiations have completed. In many cases the user will pauseand read the headline information, giving the system even more time toperform line-rate negotiation in the background.

Control next passes from the fifth step 425 to a sixth step 430. In thesixth step 430, a background process is forked to perform line-ratenegotiation. Line-rate negotiation is allowed to proceed in thebackground while the user is reading the information provided on theinitial display of the step 425. Likewise, if the user had rapidlyclicked on a link, a request packet is sent out and while the server isresponding to the request, the background line-rate negotiation mayproceed. The step 430 is operative to perform line-rate negotiation soas to set up a high-speed connection for subsequent higher volume datatransfers. In embodiments involving a virtual session server 215, theuser's line speed parameters may be stored in the table structure 225.For example, if the user is an Internet user and the application program220 is an ISP, the user will often dial in from the same location. Thusparameters derived in a previous activation of a communication channelwill be either identical or similar to those used in a currentactivation. Hence the sixth step 430 optionally involves accessing fromthe table 225 a set of starting parameters derived from the activationof the communication channel. If communication is needed before theline-rate negotiation has completed, communication preferably proceedsat the highest rate negotiated up to that point.

Once the line-rate negotiation process of the step 430 has completed,control passes to a seventh step 435. In the step 435, communication isable to proceed at full speed. In most cases where this method isimplemented, the user will get the full benefit of being connectedalmost immediately without the normal delay associated with prior artsystems. This is so because initial low-volume data is allowed to passthrough the channel before the line-rate negotiation has completed. Linerate negotiation then proceeds in the background in parallel with otheractivities such as the user reading headline information or a distantserver accessing data and responding to the initial data request packetsent across the Internet. This technique is useful when a user ismaintaining a virtual session with a remote server because it isimperative to allow the user to appear to be connected without having toexperience delays when accessing data. The method 300 and the method 400may be performed together in a complementary fashion to make the virtualsession appear to be constantly available.

The method 400 may be practiced by the remote unit 100 and the virtualsession server 215. When the remote unit 100 initiates the method, thevirtual session server 215 executes steps 410, 415, 420, 430 and 435.When the virtual session server 215, the application program 220, or thecommunication server 212 initiates the method, one or a combination ofthese servers practice the steps 405, 410, 415, 420, 430, and 435. Thefirst step 405 involves, for example, receiving a communication requestsuch as a telephony call or an email for the remote unit 100. In somesystems, the first step 405 may involve a request generated from withinthe application program 220.

Referring now to FIG. 5, a method 500 of establishing and operating avirtual session is illustrated. For example, the method 500 establishesa virtual session between the remote unit 100 and the virtual sessionserver 215. The method 500 is practiced by both the remote unit 100 andthe virtual session server 215. In a first step 505 a first physicallayer communication connection is established with a remote entity. Ifthe method is practiced by the remote unit 100, then the remote entitytypically corresponds to the virtual session server 215. The virtualsession may be used to support virtual sub-sessions between the remoteunit 100 and the application program 220. Also, a virtual sub-sessionmay be established between the remote unit 100 and the communicationserver 212. For the purposes of discussion herein, all of these virtualsessions will be referred to simply as virtual sessions. If the method500 is practiced by the virtual session server 215, then the remoteentity typically corresponds to the remote unit. The step 505 may beactivated according to the prediction 315, and the step 505 may use themethod 400 to allow the connection to be set up with very low delay.

Control next passes from the first step 505 to a second step 510. In thesecond step 510 a session is established with the remote entity. In apreferred embodiment, this involves exchanging password information andagreeing upon a set of keys to encrypt data transacted in the session.Also, the virtual session server 215 preferably sets up a table entry inthe table structure 225. The table entry indicates the presence of avirtual session. The table entry may include modem parameters asdiscussed in connection with FIG. 4. Also, the virtual session as set upin the table entry links the remote unit to a user identification and apassword as presented to the application program 220. For example, auser name and a password may be used as user authentication parameters.Preferably public key encryption is used to encrypt all information sothe password sent from the remote unit 100 to the application program220 cannot be effectively intercepted. The remote unit 100 alsopreferably sets up a virtual session data structure to hold similarinformation related to the virtual session. Once the virtual session hasbeen set up, the remote unit 100 may access the application program 220.Also, the remote unit 100 may optionally access the communication server212 for communication services.

Control next passes from the second step 510 to a third step 515. In thethird step 515, the physical connection established in the first step505 is dropped. Meanwhile the virtual session data structures and tableentries established in the second step 510 are retained. The session isallowed to proceed while no physical layer connection exists. That is,the step 510 is operative to set up a table structure including one ormore data structures which allows a virtual session to be maintained inmemory while other activities occur. Hence a passive background threadof execution passes from the step 510 to a passive step 540 whereby thevirtual session is maintained. This allows the remote unit 100 to standby or be used for steps of the workflow process 305 not requiringcommunication with the application program 220. Once the user needs tocommunicate with the application program 220, or when a prediction 315is made, control next passes from the third step 515 to a fourth step520. The step 520 is operative to reestablish a second physical layercommunication connection to allow communication to proceed once againusing the session established in the second step 510. This connectionreestablishment may be performed in response to the prediction 315 andmay use the low-delay connection establishment technique of the method400.

In some embodiments, the present invention involves using distinct andseparate communications media to perform the step 505 and the step 520.For example, a mobile worker may call in from home to set up the virtualsession in the step 510 using the first physical layer communicationconnection established in the step 505. Later in the day, the worker maycall in from a restaurant while catching up on some records keeping.This second use of the virtual session involves use of the secondphysical layer communication connection which in this example is awireless connection different from the landline connection used toinitiate the session from home earlier in the day. At a still latertime, the worker may call in from a patient's home via a third physicallayer communication connection while performing home-care services. Ifmodem starting parameters have been stored in table 225, they arepreferably updated whenever the communication connection is changed.Hence the virtual session of the present invention enables a mobileworker to continue communications via the most expedient and/oreconomical means without causing the user to have to reestablish acommunication connection. Preferably, when the remote unit 100 isconnected to a communications source via the connector 127, the remoteunit 100 automatically detects this connectivity and makes use of it forsubsequent virtual-session communications. That is, the presentinvention contemplates the availability of various forms of “pigtail”connectors being available so the remote unit 100 can operate in a“plug-and-play” fashion. Pigtails may be supplied to allow the remoteunit to connect to the PSTN, the Internet, or to another computer via auniversal serial bus, for example.

Control next passes from the fourth step 520 to a fifth step 525. In thefifth step 525 an authorization sequence is exchanged. This ispreferably implemented using public key encryption and digitalsignatures. Some embodiments may be developed which do not implement thefifth step 525, but preferred embodiments do make use of userauthentication. After the fifth step 525 has completed, the session isresumed in a sixth step 530. Over the course of the virtual session,control may loop back to the third step 515 as many times as the virtualsession is activated with a new physical connection. When the sixth step530 is entered, the virtual session is once again activated so that thepassive step 540 also passes control to the sixth step 530. In a minimalimplementation of the method, no looping occurs and the methodterminates after the first pass through the sixth step 530.

Referring now to FIG. 6, a method 600 practiced by the virtual sessionserver 210 is illustrated. In a first step 605, a first physical layercommunication connection is established for communicating with theremote unit 100. Control next passes to a second step 610 whereby a setof authorization parameters are accepted and authenticated. As discussedin connection with FIG. 5, the authentication parameters preferablyinclude the exchange of public keys which include a digital signature inaccordance with public key cryptography. Control next passes to a thirdstep 615 where a user identification and a password are passed by thevirtual session server 215 to the application program 220 on behalf ofthe remote unit 100. As discussed in connection with FIG. 5, the useridentification and the password to be presented to the applicationprogram 220 are preferably transmitted in encrypted form. Once theapplication program 220 authenticates the user identification andpassword needed to gain access, the virtual session server 215 enters anentry into the table structure 225 to hold a set of session parameters.The session parameters include the user identification, a sessionidentifier, encryption data and possibly other data such as modemstarting parameters. Once the session has been logged into the table,the user may use it to communicate with the application program 220.

Control next passes from the fourth step 620 to a fifth step 625. In thefifth step 625 the physical layer connection is dropped. This step isperformed when the remote unit does not currently require communicationswith the application program 220. In step 650 the virtual servermaintains the application session while the physical connection isdisconnected. At a later time, when the user needs access to theapplication program or when the prediction 315 is made, control nextpasses to a sixth step 630. In the sixth step 630 a second physicallayer connection is established to allow communication between theremote unit 100 and the application 220 to resume. As discussed inconnection with FIG. 5, the second physical layer connection may involvea different communication path and/or medium as was used for the firstphysical layer connection. That is, a plurality of communications mediaare preferably supported to allow the user to call in via differentmeans, for example via a wireless or a wireline connection. The step 630may be initiated due to actions at the remote unit 100 or in response toevents occurring in the server. For example, the communication server212 may receive a call for the remote unit. Alternatively an email maybe received which needs to be forwarded to the remote unit. In such acase, the sixth step 630 optionally involves sending a calleridentification packet to let the remote unit know what type ofcommunication, such as a voice telephony call, an email, or a fax, isinbound. A caller identification packet is a sequence of informationbits sent across a communication connection identifying the callingparty of the connection. In standard telephone systems, the calleridentification packet is transmitted between the first and second ringswhen the telephone call is being set-up. More details relating tocommunications initiated by the virtual session server 215 back to theremote unit 100 are discussed in connection with FIG. 7.

Once the second physical layer communication connection is establishedin the sixth step 630, possibly according to the method 400, controlnext passes to a seventh step 635. In the seventh step 635,authorization codes are verified similarly to the second step 610. Oncethe user codes have been verified to be correct, control next passes toan eighth step 640 whereby communication once again resumes using thepreviously established virtual session.

Referring now to FIG. 7, a method 700 of processing communicationrequests in a virtual session is illustrated. This method is preferablypracticed by the virtual session server 215 simultaneously with themethod 600. In a first step 705 a virtual session is established betweenthe virtual session server 215 and the remote unit 100 as discussed inconnection with FIG.'s 5 and 6. At some later time, while the virtualsession is active, the communication server 212 receives an incomingcommunication request for the remote unit 100. Because the virtualsession server 215 practices the method 500 and/or the method 600,depending on the time of arrival of the communication, the remote unit100 may or may not be physically connected to the virtual session server215 by a physical communication link. Hence when the communication isreceived, control passes from the step 705 based on a decision 710 whichdetermines whether a physical connection currently exists to the remoteunit 100.

If the virtual session is presently in a state whereby the physicalconnection has been disconnected, control passes from the first step 705to a second step 715. In the second step 715 the communication requestis accepted by the communication server 212 through a direct connectionor via the communication interface 210. Control next passes to a thirdand optional step 720 whereby a specific caller identification packet isassociated with the communication type. For example, if thecommunication involves a telephone call a fist caller identificationpacket is sent identifying an extension used for telephone calls. If thecommunication involves an email, a second caller identification packetis sent identifying an extension used for email. On the other hand, ifthe communication comes from the application program 220, still anothercaller identification packet is sent. When this optional use of a calleridentification packet is employed, the remote unit 100 has theinformation needed to properly and immediately respond to an incomingcall as discussed in connection with FIG. 8. If a call is received bythe remote unit from a source other than the virtual connection server215, the caller identification information will identify the call as notbeing associated with the virtual session. Control next passes to afourth step 725 whereby an automatic dialer responds to communicationrequests and the communication is forwarded to the remote unit 100.

Another situation arises when the communication request arrives whilethe remote unit 100 and the virtual session server 215 are currentlyconnected by an existing physical channel. According to one mode ofprocessing, control stays in the first step 705 while communicationproceeds in an active phase of a virtual session. When the communicationrequest arrives, the communication server 212 signals to the virtualsession server that a new call has arrived for the remote unit 100. Thevirtual session server then causes the existing physical layercommunication connection to be dropped and thus control passes from thefirst step 705 to the second step 715 as in the foregoing discussion. Inanother mode of processing, the existing physical layer communicationconnection is left in tact and control passes from the first step 705 toa fifth step 745. In the fifth step 745, the communication ispacketized, and in a sixth step 750 the communication packets are passedalong the existing physical layer communication connection. Controlcontinues to loop back from the sixth step 750 to the fifth step 745during the course of the communication. In this mode of operation theexisting physical layer communication connection is shared to providethe remote user with a means to stay connected to the applicationprogram 220 and communicate at the same time. In this case the physicallayer is time shared by the virtual session to allow multiple modes ofcommunications to proceed in parallel.

Note the method 700 provides the user of the remote unit 100 with avirtual presence in the work place while actually being remote.Independent of whether the remote unit is presently actively connectedto the virtual session server, the communication request may beforwarded to the remote unit 100 making the remote user appear to bepresent in the office at all times. The only time the remote unit 100would not be reachable is when it is engaged in a communication with anentity other than the virtual connection server. This problem may bemitigated by allowing the remote unit to only be reachable through theaccess number provided by the communication server 212. If a call isplaced from the remote unit to another point, this call too may berouted through the communication server 212. Systems which do allow theremote unit to make calls outside the virtual session may preferablyemploy voice mail at the communication server 212. When the remote unitagain becomes available, the virtual session server 215 may forward thecommunication to the remote unit according to the method 700. Remoteunits may also be designed using call-waiting concepts whereby thevirtual session may be re-activated by interrupting another call.

Referring now to FIG. 8, an optional method 800 practiced by the remoteunit 100 is illustrated. This method is practiced when a virtual sessionexists, the remote unit and the virtual session server are presently notconnected via a physical channel, and a communication request is to beforwarded to the remote unit 100. In a first step a first ring signal isdetected. Optionally, the first ring signal is suppressed so the userwill not hear it. In some systems a vibrational first ring signal may beallowed to pass through to notify the user of an incoming communication.In still other embodiments, the remote unit may be programmed to sound anormal ring on the first ring signal. In some embodiments the ringsignal will not be a traditional telephone ring signal but will ingeneral be any signal indicative of an incoming communication request.

In current systems, a caller identification packet is presented to thecalled party after the first ring signal. Hence identification of thecalling party becomes available at this time. After the first ringsignal, control passes from the first step 805 to a second step 810. Inthe second step 810, the caller identification information is evaluated.Note it would be preferable to accept the caller identification databefore the first ring, and the present invention contemplates systemswhereby the virtual session server 215 signals to the PSTN to provide acaller identification packet before the first ring. This service doesnot appear to be available from telephone service providers at thistime. Embodiments also comprehended by the present invention includesystems whereby the remote unit 100 immediately picks up an incomingcall and caller identification information is sent by the virtualconnection server 215 over the connection identifying the call-type.During the second step 810, the caller identification packet isevaluated. As discussed in connection with the third step 720 of themethod 700, the virtual session server 215 sends out a calleridentification packet to identify the type of incoming call. Forexample, different caller identification packets indicate whether theincoming call is an email, a voice telephone call, or a communicationfrom the application program 220.

Control next passes from the second step 810 to a third step 815. In thethird step 815, an application layer program is selected to process theincoming call. In the foregoing examples, an application may be launchedto accept an email message, a voice telephone call, or to accept acommunication from the application program 220. If the communication isan email, it may be desirable to pop a mailbox icon on the screen or toproduce a speech signal stating “you've got mail.” If the incoming callis a voice call, it may be desirable to allow the telephone to ring likea normal telephone. If the communication is from the application program220, it may be desirable to update data located in the screens of theworkflow or otherwise signal the presence of new data. Once theappropriate application has been launched to handle the incomingcommunication, control next passes to a fourth step 820 wherebycommunication session is reactivated and the communication is processed.For example, one or more packets of information may be received andrelated information such as an email message may be displayed. Also, atelephone call may be allowed to proceed or a set of information may bedownloaded from the application program 220.

Although the present invention has been described with reference tospecific embodiments, other embodiments may occur to those skilled inthe art without deviating from the intended scope. For example, otherforms of communications such as fax messages may be accepted anddisplayed by the remote unit 100. Also, the present invention may beused for applications other than mobile workers and Internet users.Virtual sessions according to the present invention are applicable toany situation where a continual connectivity is required but the cost toremain continuously connected is high. Vehicle computers with cellularradio based Internet connections are an example. In such systems, theremote unit 100 may be a vehicle-mounted computer or may include aconnection to a vehicle-mounted computer. Also, virtual sessionsaccording to the present invention are applicable to any situation wherethe user should not be burdened with the need to upload and/or downloaddata and go through connection and disconnection procedures. Therefore,it is to be understood that the invention herein encompasses all suchembodiments which do not depart from the spirit and scope of theinvention as defined in the appended claims.

1-20. (Cancelled)
 21. A method of establishing wireline telephonic modemcommunications in an ISP communications server, the method comprising:receiving an incoming telephone call from a client device; establishinga first modem communications connection over a telecommunicationsnetwork with the client device, the establishing the firstcommunications connection including deriving a first negotiated datarate, wherein at least one connection parameter derived in theestablishing is stored in a storage area located in at least one of theclient device and the ISP communications server; communicating with theclient device at the first negotiated data rate; receiving a firstuser-initiated indication related to a first request to terminate modemcommunications on the first communications connection; discontinuing thefirst modem communications connection in response to receiving the firstrequest to terminate modem communications; receiving a seconduser-initiated indication related to a second request to resume modemcommunications; establishing a second modem communications connectionover the telecommunication network with the client device, theestablishing the second modem communications connection being based atleast in part on the at least one connection parameter, whereinestablishing the second modem communications connection includesderiving a second negotiated data rate; and communicating with theclient device on the second communications connection at the secondnegotiated data rate.
 22. The method of claim 21, wherein each of theISP communications server and the client device utilize at least oneV.90 compliant modem to establish the first and second modemcommunications connections.
 23. The method of claim 21, wherein a firsttime period required to perform the establishing the first modemcommunications connection is greater than a second time period requiredto perform the establishing the second modem communications connection.24. The method of claim 21, wherein the deriving the first negotiateddata rate and the deriving the second negotiated data rate are performedat least partially in accordance with the V.34 modem standard.
 25. Themethod of claim 21, wherein the first user-initiated indication isassociated with a call waiting signal and the second user-initiatedindication is associated with the user discontinuing a call.
 26. Themethod of claim 21, wherein the first user-initiated indicationindicates a desire to pause communication, and the second user-initiatedindication indicates a desire to resume communication.
 27. The method ofclaim 21, wherein the second negotiated data rate is equivalent to thefirst negotiated data rate.
 28. The method of claim 21, wherein thesecond negotiated data rate is different than the first negotiated datarate.
 29. An apparatus for performing wireline telephonic modemcommunications in an ISP communications server, the apparatuscomprising: a central processing unit; a memory communicatively coupledto the central processing unit; and one or more modems communicativelycoupled to the central processing unit, the modems being configured to:receive an incoming telephone call from a client device; establish afirst modem communications connection over a telecommunications networkwith the client device, establishing the first modem communicationsconnection including deriving a first negotiated data rate, wherein atleast one connection parameter derived in the establishing is stored ina storage area located in at least one of the client device and the ISPcommunications server; communicate with the client device at the firstnegotiated data rate; receive a first user-initiated indication relatedto a first request to terminate modem communications on the first modemcommunications connection; discontinue the first modem communicationsconnection in response to receiving the first request to terminate modemcommunications; receive a second user-initiated indication of a secondrequest to resume communications; establish a second modemcommunications connection over the telecommunication network with theclient device, establishing the second modem communications connectionbeing based at least in part on the at least one connection parameter,wherein establishing the second modem communications connection includesderiving a second negotiated data rate; and communicate with the clientdevice on the second modem communications connection at the secondnegotiated data rate.
 30. The apparatus of claim 29, wherein each of theISP communications server and the client device utilize at least oneV.90 compliant modem to establish the first and second communicationsconnections.
 31. The apparatus of claim 29, wherein a first time periodrequired to establish the first communications connection is greaterthan a second time period required to establish the secondcommunications connection.
 32. The apparatus of claim 29, wherein thederiving the first negotiated data rate and the deriving the secondnegotiated data rate are performed at least partially in accordance withthe V.34 modem standard.
 33. The apparatus of claim 29, wherein thefirst user-initiated indication is associated with a call waiting signaland the second user-initiated indication is associated with the userdiscontinuing a call.
 34. The apparatus of claim 29, wherein the firstuser-initiated indication indicates a desire to pause communication, andthe second user-initiated indication indicates a desire to resumecommunication.
 35. The apparatus of claim 29, wherein the secondnegotiated data rate is equivalent to the first negotiated data rate.36. The apparatus of claim 29, wherein the second negotiated data rateis different than the first negotiated data rate.